// SPDX-License-Identifier: GPL-3.0-only
/*
 * Copyright (c) 2008-2023 100askTeam : Dongshan WEI <weidongshan@qq.com> 
 * Discourse:  https://forums.100ask.net
 */

 
/*  Copyright (C) 2008-2023 深圳百问网科技有限公司
 *  All rights reserved
 *
 *
 * 免责声明: 百问网编写的文档，仅供学员学习使用，可以转发或引用(请保留作者信息)，禁止用于商业用途！
 * 免责声明: 百问网编写的程序，可以用于商业用途，但百问网不承担任何后果！
 * 
 * 摘要：
 *			本程序遵循GPL V3协议，使用请遵循协议许可
 *			本程序所用的开发板：	DShanMCU-F103
 *			百问网嵌入式学习平台：https://www.100ask.net
 *			百问网技术交流社区：	https://forums.100ask.net
 *			百问网官方B站：				https://space.bilibili.com/275908810
 *			百问网官方淘宝：			https://100ask.taobao.com
 *			联系我们(E-mail)：	  weidongshan@qq.com
 *
 *			版权所有，盗版必究。
 *  
 * 修改历史     版本号           作者        修改内容
 *-----------------------------------------------------
 * 2023.08.04      v01         百问科技      创建文件
 *-----------------------------------------------------
*/

#ifndef _DRIVER_SPIFLASH_W25Q64_H
#define _DRIVER_SPIFLASH_W25Q64_H

#include <stdint.h>

/**********************************************************************
 * 函数名称： W25Q64_Init
 * 功能描述： W25Q64的初始化函数
 * 输入参数： 无
 * 输出参数： 无
 * 返 回 值： 无
 * 修改日期：      版本号     修改人	      修改内容
 * -----------------------------------------------
 * 2023/08/04	     V1.0	  韦东山	      创建
 ***********************************************************************/
void W25Q64_Init(void);


/**********************************************************************
 * 函数名称： W25Q64_Read
 * 功能描述： W25Q64读函数
 * 输入参数： offset - 读哪个地址
 *            len    - 读多少字节
 * 输出参数： buf - 用来保存数据
 * 返 回 值： 非负数 - 读取了多少字节的数据, (-1) - 失败
 * 修改日期：      版本号     修改人	      修改内容
 * -----------------------------------------------
 * 2023/08/04	     V1.0	  韦东山	      创建
 ***********************************************************************/
int W25Q64_Read(uint32_t offset, uint8_t *buf, uint32_t len);



/**********************************************************************
 * 函数名称： W25Q64_Write
 * 功能描述： W25Q64写函数(需要先擦除)
 * 输入参数： offset - 写哪个地址
 *            buf    - 数据buffer
 *            len    - 写多少字节
 * 输出参数： 无
 * 返 回 值： 非负数 - 写了多少字节的数据, (-1) - 失败
 * 修改日期：      版本号     修改人	      修改内容
 * -----------------------------------------------
 * 2023/08/04	     V1.0	  韦东山	      创建
 ***********************************************************************/
int W25Q64_Write(uint32_t offset, uint8_t *buf, uint32_t len);


/**********************************************************************
 * 函数名称： W25Q64_Erase
 * 功能描述： W25Q64写函数
 * 输入参数： offset - 擦除哪个地址(4096对齐)
 *            len    - 擦除多少字节(4096对齐)
 * 输出参数： 无
 * 返 回 值： 非负数 - 擦除了多少字节的数据, (-1) - 失败
 * 修改日期：      版本号     修改人	      修改内容
 * -----------------------------------------------
 * 2023/08/04	     V1.0	  韦东山	      创建
 ***********************************************************************/
int W25Q64_Erase(uint32_t offset, uint32_t len);



/**********************************************************************
 * 函数名称： W25Q64_Test
 * 功能描述： W25Q64测试程序
 * 输入参数： 无
 * 输出参数： 无
 *            无
 * 返 回 值： 无
 * 修改日期        版本号     修改人        修改内容
 * -----------------------------------------------
 * 2023/08/04        V1.0     韦东山       创建
 ***********************************************************************/
void W25Q64_Test(void);


#endif /* _DRIVER_SPIFLASH_W25Q64_H */

